package control.validator;

import java.util.List;

import model.dao.ElectorDAO;
import model.entity.Elector;
import security.SecurityManager;

/**
 * 
 * Classe que valida os eleitores de uma eleição
 * @author andrebo,elerss 
 * 
 */
public class ElectorValidator {
	
	//security manager object
	private SecurityManager securityManager;
	private static ElectorValidator instance = null;
	/*
	 * 
	 * 
	 */
	
	private ElectorValidator(SecurityManager sm) throws Exception
	{
		this.securityManager = sm;
	}
	
	/**
	 * Inicializa um elector validate
	 * @param sm SecutiryManager
	 * @throws Exception em caso de erro.
	 */
	public static void init(SecurityManager sm) throws Exception
	{
		if(ElectorValidator.instance == null)
		{
			ElectorValidator.instance = new ElectorValidator(sm);
		}
		
	}
	
	/**
	 * @return uma instancia do Elector Validator
	 */
	public static ElectorValidator getInstance()
	{
		return ElectorValidator.instance;
	}

	/**
	 * @return Se o eleitor é válido.
	 * @param electorId - string com o identificador do eleitor
	 */
	public boolean validate(String electorId)
	{		
		
		ElectorDAO electorDao = new ElectorDAO(this.securityManager);
		String selectString = "id=" +  electorId + ";voted=0";
		List<Elector> electorList = electorDao.select(selectString); 
		
		return !electorList.isEmpty(); 
		
	}
}
